#include <iostream>
#include <string>

// 类（相当于C++里的复合数据类型，可以放变量和函数）
class Student
{
public: //（方法设为公有）
    // 成员函数（方法）
    // 函数声明（为了美观，将函数声明放在类的内部，函数定义放在类的外部）
    void SetName(std::string name);
    void SetAge(int age);
    void show();

private: //（属性设为私有）
    // 成员变量（属性）
    // 成员变量名前面加个m_，避免传参的时候重名
    std::string m_name;
    int m_age;
};

// 函数定义
void Student::SetName(std::string name)
{
    m_name = name;
}

void Student::SetAge(int age)
{
    m_age = age;
}

void Student::show()
{
    std::cout<<"学生姓名："<<m_name<<" 学生年龄："<<m_age<<std::endl;
}

struct Test
{
public:
    void SetA(int a)
    {
        m_a = a;
    }

    void show()
    {
        std::cout<<"a = "<<m_a<<std::endl;
    }
private:
    int m_a;
};


int main()
{
#if 1
    Student s;  // C++里的结构体可以直接把自己的名字当成是一种数据类型，不需要加struct或class
    s.SetName("zhangsan");
    s.SetAge(10);
    s.show();
#endif

#if 0
    Test t;
    t.SetA(100);
    t.show();
#endif
    return 0;
}

